package org.zero.common.core.support.export;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author Zero (cnzeropro@163.com)
 * @since 2024/9/4
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface FileExport {
    @AliasFor("filename")
    String value() default "";

    /**
     * 文件名。如果为空，则默认为【当前时间.文件类型后缀名】，对于无法判断文件类型的，则默认为【当前时间】
     */
    @AliasFor("value")
    String filename() default "";

    /**
     * 响应类型。为空时，会尝试获取 contentType，还是没有时，默认：application/octet-stream
     */
    String contentType() default "";

    /**
     * 字符集。默认：UTF-8。仅导出字符流 {@link java.io.Reader} 使用
     */
    String charset() default "UTF-8";
}
